/*
用数组来实现顺序栈
top=-1表示空


*/

#include<stdio.h>
#define MAXSIZE 10

//用数组来实现一个栈
typedef int ElementType;

//1.定义一个栈的数据结构
typedef struct {
    //1.用数组来实现一个数据域，存放数据用
    ElementType data[MAXSIZE];
  //2.定义一个变量，用来指向栈顶，即指向数组(已经使用)的最后一个位置
  int top;
 } SeqStack;

//2.实现操作用的函数
//2.1初始化，创建一个空栈

/*
 * 函数名：InitStack()
 * 输入：无
 * 输出：创建好的空栈
 *
 * */
SeqStack InitStack(){
    SeqStack stack;
    //给栈进行赋值
    stack.top=-1;//栈此时为空

}
//2.2进栈
//函数名：push 输入：栈 元素  输出：int
//栈没有满的情况下，执行进栈操作
int Push(SeqStack *stack,ElementType data){

  //栈已经满的情况
   if(stack->top>=MAXSIZE-1){
     printf("栈已经满，无法进行进栈的操作");
     return 0;

}
        //1.指向下标值的top后移
       stack->top++;
       //2.给新的栈顶赋值
      stack->data[stack->top]=data;
     return 1;
}
//2.3出栈
//2.3出栈
/*
函数名：Pop
输入：stack
输出：返回被删除的栈顶元素
*/
//栈不为空，进行删除
ElementType Pop(SeqStack *stack){
    //1.栈为空
    //判断条件top==-1?
    if(stack->top!=-1){
//top变量前移动一个位置
        //return stack->data[stack->top--];
        ElementType tmp = stack->data[stack->top];
        stack->top--;
        return tmp;
    }
    printf("栈已经是空栈，无法执行删除操作");
    return -1000;
}
int main(){

    //1.创建空栈
    SeqStack stack = InitStack();
    //2.进栈
    ElementType data;
    for (int i = 0; i < 5; ++i) {
        scanf("%d",&data);
        Push(&stack,data);

    }
    //3.出栈
    Pop(&stack);

//printf("hello");
return 0;

}
